#include <iostream>
#include <memory>
#include "pthread.hpp"
#include "task.hpp"
#include "ringQueue.hpp"
#include "pthreadPool_V3.hpp"
#include <time.h>
#include <unistd.h>

// V1 - V2
// int main()
// {
//     ThreadPool<Task> pool;
//     pool.init();
//     pool.start();
//     srand(time(nullptr));
//     for (int i = 0; i = 10; ++i)
//     {
//         int x = rand() % 100 + 1;
//         int y = rand() % 100 + 1;
//         char op[] = {'+', '-', '*', '/'};
//         int num;
//         std::cout<<"please input num:";
//         std::cin>>num;
//         num = num % 4;
//         Task task(x, y, op[num]);
//         pool.pushTask(task);
//         sleep(1);
//         pool.check();
//     }
//     return 0;
// }

// V3
int main()
{
    ThreadPool<Task> *pool = ThreadPool<Task>::getInstance();
    pool->init();
    pool->start();
    srand(time(nullptr));
    for (int i = 0; i = 10; ++i)
    {
        int x = rand() % 100 + 1;
        int y = rand() % 100 + 1;
        char op[] = {'+', '-', '*', '/'};
        int num;
        std::cout<<"please input num:";
        std::cin>>num;
        num = num % 4;
        Task task(x, y, op[num]);
        pool->pushTask(task);
        sleep(1);
        pool->check();
    }
    return 0;
}